import javax.script.ScriptEngine;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MyTest extends JFrame implements ActionListener {
    //定义两个面板
    private  JPanel north,center;
    //文本框,用于显示计算结果
    private JTextField field;
    //定义按钮
    private JButton[] btns;
    //按钮文字数组
    private String[] str;
    //计算引擎
    private ScriptEngine engine;
    //构造函数
    public MyTest(){
        //设置窗口标题
        setTitle("计算器");
        //设置窗口大小 宽 高
        setSize(700,700);
        //关闭窗口时退出程序
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        //设置窗口位置
        setLocationRelativeTo(null);
//        setLocation((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth()-this.getWidth()/2,
//                (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight()-this.getHeight()/2);
        //窗口初始化
        initComponent();
        //设置窗口可见
        setVisible(true);
        //窗口添加内容
        //无参无返回值
    }

    private void initComponent() {
        //窗口中添加内容
        //创建面板
        north = new JPanel();
        center = new JPanel();
        //创建文本框
        field = new JTextField();
        //设置文本框属性
        field.setPreferredSize(new Dimension(700,70));
        //输入框禁止编辑
        field.setEditable(false);
        //设置一个字体格式
        Font font = new Font("SansSerif",Font.BOLD,25);
        field.setFont(font);
        //以数组形式说明按钮字符数组
        str = new String[]{
        "7","8","9","+",
        "4","5","6","-",
        "1","2","3","×",
        "0",".","=","÷",
        "C","B","T","S"
        };
        //创建按钮
        btns = new JButton[str.length];
        for(int i = 0;i<btns.length;i++){
            btns[i] = new JButton(str[i]);
            btns[i].setFont(new Font("SansSerif",Font.BOLD,25));
        };
        //设置布局
        north.setLayout(new BorderLayout());
        //设置案板布局
        center.setLayout(new GridLayout(5,4));
        //将文本框添加到上面的内容
        north.add(field,BorderLayout.NORTH);
        //将btn添加到center面板
        for(int i = 0;i<btns.length;i++){
            center.add(btns[i]);
        }
        //给按键添加监听器
        for(int i = 0;i<btns.length;i++){
            btns[i].addActionListener(this);
        }
        //将面板添加到窗口中
        this.add(north,BorderLayout.NORTH);
        this.add(center);
    }

    public static void main(String[] args) {
       // System.out.println("Hello World!");
        //创建一个实例
        new MyTest();
    }
    public void showBtnText(String text){
        //显示按钮的文本
       System.out.println(text);
       //判断text是不是数字
        //正则表达式检测text是不是单个数字
       // text.matches("\\d");
       // System.out.println(text);
        Boolean isNum = text.matches("\\d");
        if(isNum){
            //如果是，就拼接到字符串上
            String oldText = field.getText();
            field.setText(oldText + text);
        }else{
            //如果不是，就特殊处理
            System.out.println(text);
            if("C".equals(text)){
                System.out.println("C");
                //清空输入框
                field.setText("");
            }else if("B".equals(text)){
                //刪除最后一位
                //當前文本框内容
                System.out.println("B");
                if(field.getText().length()>0) {
                    //先獲取輸入框的内容，然後重新設置到輸入框
                    field.setText(field.getText().substring(0, field.getText().length() - 1));
                }
            }
            else if("T".equals(text)){
                System.out.println("T");
                //顯示時間
            }
            else if("S".equals(text)){
                System.out.println("S");
                //關閉時間
            }
            else if("=".equals(text)){
                System.out.println("=");
                //计算
            }
            //如果是运算符
            //保留已输入的数值
            //输入框上已有文字
            //String oldNum=field.getText();
            //System.out.println(oldNum);
            //清空输入区
           // field.setText(text);
        }
       //field.setText(text);
       //输入框上文字怎么累加
        //输入框上已有文字
        //String oldText=field.getText();
//        field.setText(oldText+text);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        //输出捕获到的Action
       // System.out.println(e.getSource());
        Object source = e.getSource();
        if(source instanceof JButton) {
        //判断按钮类型
            JButton btn = (JButton)source;
            //获取按钮的文本
            String text = btn.getText();
           // System.out.println(btn);
            //展示文字到输入框上
            this.showBtnText(text);
        }

    }
}